﻿#define _CRT_SECURE_NO_WARNINGS 1

//#include<iostream>
//using namespace std;
//
//class Date
//{
//public:
//	Date(int year = 1, int month = 1, int day = 1)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	// void Print(const Date* const this) const - 隐含的this
//	void Print() const//相当于这个const加到*的左边
//	{
//		cout << _year << "-" << _month << "-" << _day << endl;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//const
//int main()
//{
//	// 这里非const对象也可以调用const成员函数是一种权限的缩⼩
//	Date d1(2024, 7, 5);
//	d1.Print();
//	const Date d2(2024, 8, 5);
//	//&d -> const Date*
//	d2.Print();
//	return 0;
//}

//#include<iostream>
//using namespace std;
//class Time
//{
//public:
//	Time(int hour)
//		:_hour(hour)
//	{
//		cout << "Time()" << endl;
//	}
//private:
//	int _hour;
//};
//class Date
//{
//public:
//	Date(int& x, int year = 1, int month = 1, int day = 1)
//		:_year(year)
//		,_month(month)
//		,_day(day)
//		,_t(12)
//		,_ref(x)
//		,_n(1)
//	{
//		// error C2512: “Time”: 没有合适的默认构造函数可用
//		// error C2530 : “Date::_ref” :必须初始化引用
//		// error C2789 : “Date::_n” : 必须初始化常量限定类型的对象
//
//	}
//	void Print() const
//	{
//		cout << _year << "-" << _month << "-" << _day << endl;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//	Time _t;//没有默认构造
//	int& _ref;//引用
//	const int _n;// const 
//};
//int main()
//{
//	int i = 0;
//	Date d1(i);
//	d1.Print();
//	return 0;
//}


//#include<iostream>
//using namespace std;
//class Time
//{
//public:
//	Time(int hour = 0)
//		:_hour(hour)
//	{
//		cout << "Time()" << endl;
//	}
//private:
//	int _hour;
//};
//class Date
//{
//public:
//	Date(int year = 1, int month = 1, int day = 1)
//		:_year(year)
//		, _month(month)
//	{ }
//	void Print() const
//	{
//		cout << _year << "-" << _month << "-" << _day << endl;
//	}
//private:
//	//声明的位置给缺省值,记住,这不是初始化,因为这是声明
//	//这个缺省值是给初始胡列表的
//	int _year = 2;
//	int _month = 2;
//	int _day = 2;
//	Time _t = 10;
//	const int _n = 3;
//};
//int main()
//{
//	Date d1;
//	d1.Print();
//	
//	return 0;
//}
